function [ ERdCtot ERdCelem ] = ERdC( donnees )

maillage = donnees.maillage ;
poutre = donnees.poutre ;
Uh = donnees.res.Uh ;


ERdCelem = zeros(length(maillage)-1,1) ;
ERdCtot = 0 ;

Kelem = zeros(4,4) ;


for i=1:length(maillage)-1
    
    elementCourant = maillage(i:i+1) ;
    UhElem = Uh((i-1)*2 + 1 : (i-1)*2 + 4) ;
    
    Kelem = RigiditeElementaire(elementCourant,poutre) ;
    vecContribCroise = ERdC_VecContrib_croise(donnees,elementCourant) ;
    contribM2 = ERdC_contrib_M2(donnees,elementCourant) ;
    
%     contribM2;
%     vecContribCroise
%     UhElem
%     UhElem'*Kelem*UhElem;
    
    ERdCelem(i) = 0.5*contribM2 - vecContribCroise*UhElem + 0.5*UhElem'*Kelem*UhElem ;
    
    ERdCtot = ERdCtot + ERdCelem(i) ;


end

ERdCelem ;
ERdCtot ;

end

